In recent years, personal computing has become more global and more mobile. The widespread adoption of portable personal computing devices such as laptops, Personal Data Assistants (PDAs), tablet computers, music players, and cell phones allow users to access to their personal data virtually anywhere and at anytime. A user flying on a plane to New York can access e-mail stored on a server in San Francisco. A shopper strolling through a shopping center can be electronically offered a personalized discount from a retailer. Friends in disparate geographic locations can instantly share digital photos and text messages with each other.
At the same time, with the increasing computing power of personal computing devices and the wide availability of wired and wireless broadband Internet connections, more and more web application functionality is now being executed by end-user devices. This shift in processing from server to client is being facilitated by the ubiquity of web browser software that supports Internet standards such ECMAScript, Hypertext Markup Language (HTML), Cascading Style Sheets (CSS), Extensible Markup Language (XML), and other standards.
As more and more web application functionality moves from server to client, a whole new set of challenges face web application developers: previously server-centric web applications are now distributed between servers and many clients. A particular set of challenges involves sharing data that a web application stores on an end-user device with other end-user devices. Sharing web application data among end-user devices is especially challenging because many personal computing devices, especially portable wireless devices, operate in semi-connected computing environments.
In a typical distributed computing system, powerful computers are interconnected by fixed, robust network infrastructure. In contrast, in semi-connected computing environments, portable devices with relatively limited processing, storage, and power capabilities access other devices over intermittent, low-bandwidth, high-latency network connections. Although wireless networks are being deployed at a rapid pace, ubiquitous highly-available, high-bandwidth, low-latency network connectivity remains elusive. Thus, web applications should be accommodating of intermittent and generally low-bandwidth, high-latency connectivity between end-user devices and servers. Further, web applications should limit computation and network communication to the extent possible to conserve battery life of the portable devices on which they execute.
Also, web applications should aim to limit the amount of metadata they require to store on personal computing devices, where data storage space may be limited.
Web applications should also aim to limit the amount of metadata they require to send over the network, where connectivity may be weak. Further, for battery-powered devices generally, the less network communication and the less amount of data communicated over the network, the less battery power used.
Given the need for sharing web application data among end-user devices, developers of web applications and end-users of web applications would appreciate solutions for more easily, reliably, and efficiently sharing application data among personal computing devices.